1. Field of the Invention
This invention relates to computerized configuration methods and systems. More particularly, this invention relates to computerized methods and systems for developing technical configurations and electronically delivering order reports to a client. The methods and systems are implemented in computer hardware and software.
2. Background Information
Large amounts of data and programs for a great variety of tasks are currently available on the Internet. Some of these applications are useful for performing discrete logical tasks, while others are available to retrieve data. Still other applications are available that may aid in the selection and customization of products, such as vehicles or computers, or services, such as the availability of flights and corresponding fare information. In these selection/customization tools for products or services, the manufacturer of the product or the service provider may offer detailed options for the user's selection, and a large number of interrelationships may exist between the various options. When these options and interrelationships are complex, large and detailed software may be necessary for electronic configuration systems.
The Internet is a collection of computer networks that allows computer users to share files and other computer resources. Each computer connected to the Internet has a unique address whose format is defined by the Internet Protocol (“TCP/IP”). The Internet includes a public network using the TCP/IP and includes two kinds of computers: servers, which provide information and documents; and clients, which retrieve and display documents and information for users. Events that take place on the server machine are referred to as server-side activities, while events that take place on the client machine are known as client-side activities. As will be appreciated by those of ordinary skill in the art, as used throughout this specification the term “client” refers to a client computer (or machine) on a network, or to a process or programs, such as Web browsers, which run on a client computer in order to facilitate network connectivity and communications. Thus, for example, a “client machine” can store one or more “client processes.” The term “user” is used to refer broadly to one or more persons who use a particular client machine. Similarly, the term “server” will be used throughout this specification to refer to a server computer or computer system on a network, or to a process or programs which run on a server computer.
The “World Wide Web” (“Web”) is that collection of servers on the Internet that utilize the Hypertext Transfer Protocol (“HTTP”). HTTP is a known application protocol that provides users access to resources, which may be information in different formats such as text, graphics, images, sound, video, Hypertext Markup Language (“HTML”), as well as programs. HTML is a standard page description language which provides basic document formatting and allows the developer to specify “links” to other servers and files. Links may be specified via a Uniform Resource Locator (“URL”). Upon specification of a link by the user, the client makes a TCP/IP request to a Web server and receives information, which may be another “Web page” that is formatted according to HTML, from a server that was specified in the requested URL. The information returned to the client may be generated in whole or in part by a program that executes on the server. Such programs are typically Common-Gateway-Interface scripts (“CGI scripts”) and can be written using known programming languages or methods that the server supports, such as PERL or C++.
Servers include both Web servers and applications servers. Web servers are the software or computers responsible for accepting requests from clients and retrieving the specified file or specified CGI script, and returning its contents or the CGI script's results to the client. An application server is the actual software or computer which contains programs, CGI scripts, or data for a specific site. Servers run on a variety of platforms, including UNIX machines, although other platforms, such as Windows 95, Windows NT, and Macintosh may also be used.
Computer users can view information available on servers or networks on the Web through the use of browsing software, such as Netscape Navigator, Microsoft Internet Explorer, Mosaic, or Lynx browsers. A typical Web page is an HTML document with text, “links” that a user may activate (e.g. “click on”), as well as embedded URLs pointing to resources, such as images, video or sound, that the client may activate to fully use the Web page in a browser. In some situations, these resources may not be located on the same server that provided the HTML document to the client. Furthermore, HTTP allows for the transmission of certain information from the client to a server. This information can be embedded within the URL, can be contained in HTTP header fields, or can be posted directly to the server using other known HTTP methods.
Web activity begins on the client side, when a user sends a request to a server over the Internet. When a user's browser requests information from a server, the server may send information including graphics, instruction sets, sound and video files in addition to HTML documents (Web pages) to the requesting client. In order to view and use information from the Web using a browser, the entire HTML document must be downloaded from the Internet server to the client's machine and then processed by the browser before the consumer can fully see and access it. A user may become impatient waiting for a graphics-oriented Web page or detailed data to appear on his/her computer screen. Information delivery on the Internet can be frustrating, because it is much slower than delivery of data from the consumer's computer hard drive or main memory.
In a server-side application, the client must repeat the process described above, sending a request to a server over the Internet and receiving information from the server in return, in order for the client to interact with a server over the Internet. For instance, a user may supply information in response to queries in a Web page. When the client clicks on a “submit” button, which initiates interaction over the Internet, the information is passed to the server. As explained above, programs such as CGI scripts may process the information, and the server may then return a Web page containing the information requested by the user.
The Web page received by the client from the server may create or set an ID field, known as a “client ID” or “cookie,” located in a file on the client machine to include information about the user's preferences. When the user later returns to a specified URL on the same server, the “client ID” or “cookie” with the previously-set preference information is transmitted in the HTTP request header to the server, which may then return a Web page that is assembled according to the user-specific information. This interactive model for processing information over the Internet is a server-side application, in which most of the logic and data processing is performed on the server side.
A second possible interactive model is to deliver applications directly from the server to the user's browser, where they are executed on the client machine. These applications are typically small tools that perform simple tasks on the client computer, including a variety of HTML page display enhancements. In the typical server-side system described above, servers perform most of the computational work on the Web, and Web browsers may be little more than glorified terminals. With so-called “applets” that run within a Web browser to process information and other client-side programs, Web technology is shifted more toward the client, relieving some of the computational load from the server. Applets may be used for a variety of functions, and an applet may be a full-fledged program that can perform any number of computational and user-interactive tasks on the client computer. For instance, an applet might create a unique set of menus, choices, text fields, and similar user-input tools different from those available through the browser. A number of different languages can be used for client-side programs and applets, such as Java, ActiveX, JavaScript, Helper-Viewer, and other plug-ins. Client-side JavaScript, for instance, is a commonly used programing language that may be embedded into HTML Web pages and allows executable content, as opposed to data, to be distributed over the Internet. JavaScript also has a limited ability to interact with the user.
There are problems associated with both client-side and server-side computational and interactive systems. If a client-side approach is used, a large amount of time and/or bandwidth may be used sending information to the client, a majority of which may not be necessary to the end result desired by the user. When a large amount of time is spent transferring data over the Internet, this may not only be annoying to the user, but it may also clog the network with unnecessary data transfer. Additionally, only a limited amount of space in the memory of the client is available. In view of these constraints, client-side programs are typically only used for simple validations of information entered by the user or to generate graphic effects on the client. Large tasks requiring extensive processing (by reason of large executable files or extensive data files, or both) are usually not performed on the client. One result of this may be that interface and options offered to the client are limited. The client's sense of control over the transaction may therefore be less than desired.
Server-side programs may also have undesirable attributes. Much like client-side systems, a large amount of time may be spent transferring data to and from the server. In a pure server-side system, each time a user performs an operation on the client machine, a request is sent to the server to validate the request and perform an operation for transfer back to the client. A great deal of time may therefore be spent on the network validating information and processing data on the server. Such a system puts a heavy load on the server. In addition to these drawbacks, the user may be annoyed by the large amount of time necessary to interact with the server and update information on the client machine.
It is therefore important to allocate appropriately the processing load and data transfers between the browser and the server. Some tasks, such as forms processing and index searches may be better left to the server side, while others, such as user interface enhancements, real-time data presentation, and input validation may be better suited for local processing on the client. A system and method is needed for interactive network applications to reduce the load on a server, reduce the amount of time required to transfer information over the network, and to save the user time in performing tasks over the network.
Such a system and method may be particularly useful for complex technical configuration tasks in which large amounts of both logic and data may be necessary to successfully configure a product or service. For such technical configuration tasks, a number of constraints or desirable system attributes exist. First, the user's desired configuration must be viable, meaning that the manufacturer or service provider can assemble the various options desired by the user into a product. Second, it is desirable to indicate the price of the fully assembled configuration at the time of the order. Third, it is desirable to present all or most of the available options for a given product to a user on the client machine.
For some technical configuration tasks, such as products where manufacturers offer detailed option choices for configuration, configuring the product may be further complicated by the complex interrelationships and links between different options. Although in some configuration tasks it would be desirable to provide at the client an environment that is as option-rich as possible, technical limitations are encountered that limit the amount of logic and data that may be transferred to the client. For complex configuration tasks, the transmission of all of the logic to the client may be both time consuming and impractical due to memory space; on the other hand, a pure server-side embodiment may require a large amount of interaction between the server and the client as well as a heavy load on the server.